import tkinter as tk
import pymssql
#上级管理部门-查询植物基本信息的页面
# 连接到数据库
conn = pymssql.connect(
    host='localhost',
    user='CSY',
    password='211002624',
    database='植物管理系统'
)
cursor = conn.cursor(as_dict=True)

def open_plant_info(entry1_value):
    plant_info_window = tk.Tk()
    plant_info_window.title("上级主管部门-植物信息页面")
    plant_info_window.geometry("400x300")

    # 提示文本
    label_prompt = tk.Label(plant_info_window, text="请输入植物的名称：")
    label_prompt.pack()

    # 输入框
    entry_plant_name = tk.Entry(plant_info_window)
    entry_plant_name.pack()

    # 显示框
    display_text = tk.Text(plant_info_window, height=10, width=40)
    display_text.pack()

    # 显示按钮
    def show_plant_info():
        plant_name = entry_plant_name.get()
        # 获取植物信息的逻辑
        plant_data = get_plant_info_from_database(plant_name)
        # 显示获取的植物信息
        display_text.delete(1.0, tk.END)
        display_text.insert(tk.END, plant_data)

    show_button = tk.Button(plant_info_window, text="显示植物信息", command=show_plant_info)
    show_button.pack()


    def show_plant_info1():
        plant_name = entry_plant_name.get()
        # 获取植物信息的逻辑
        plant_data =  check_credentials3(plant_name)
        # 显示获取的植物信息
        display_text.delete(1.0, tk.END)
        display_text.insert(tk.END, plant_data)

    show_button1 = tk.Button(plant_info_window, text="统计植物数量", command=show_plant_info1)
    show_button1.pack()

    plant_info_window.mainloop()


def check_credentials3(plant_name):
    cursor = conn.cursor()  # 获取游标
    sql = f"SELECT DISTINCT path FROM 分类 WHERE 分类.名称= '{plant_name}'"

    cursor.execute(sql)
    result1 = ""
    if cursor.rowcount == 0:  # 如果没有找到记录
        result = "无该植物信息"
    else:
        for row in cursor:  # 对每一行数据遍历输出
            result1 += "%s" % (row[0])
            print(result1)
            cursor = conn.cursor()  # 获取游标
            sql = f"SELECT DISTINCT 分类.编号, 分类.名称, path FROM 分类 WHERE 分类.path like CONCAT('{result1}', '%')"

            cursor.execute(sql)

            result = ""
            for row in cursor:  # 对每一行数据遍历输出
                numbers = row[2].split('/')
            result += "ID：" + "%s" % (row[0]) + "\n" + "名称:" + "%s" % (row[1]) + "\n" + "路径:" + "%s" % (
                '/'.join(numbers))
            # result += "%s,%s,%s" % (row[0], row[1], '/'.join(numbers))
            result += "\n"
            print(result)

            display_text.delete(1.0, tk.END)
            display_text.insert(tk.END, result)






# numbers = row[2].split('/')


# 从数据库中获取植物信息
def get_plant_info_from_database(plant_name):
    try:
        print(plant_name)
        # 使用参数化查询,防止 SQL 注入
        cursor.execute("SELECT 基本信息.植物编号,基本信息.植物名称,基本信息.植物别名,基本信息.植物病名,分布区域.县名称,分布区域.市名称,分布区域.省名称,分类.path,基本信息.栽培技术要点,基本信息. 植物形态特征,基本信息.应用价值 FROM 基本信息,分类,分布,分布区域 WHERE 基本信息.植物编号=分类.编号 AND 分类.编号=分布.植物编号 AND 分布.县编号=分布区域.县编号 AND 植物名称 = %s", (plant_name,))
        plant_info = cursor.fetchone()



        if plant_info:
            # 将查询结果格式化成字符串
            plant_data = (f"植物编号: {plant_info['植物编号']}\n"
                          f"植物名称: {plant_info['植物名称']}\n"
                          f"植物别名: {plant_info['植物别名']}\n"
                          f"植物病名: {plant_info['植物病名']}\n"
                          f"县名称: {plant_info['县名称']}\n"
                          f"市名称: {plant_info['市名称']}\n"
                          f"省名称: {plant_info['省名称']}\n"
                          f"植物形态特征: {plant_info['植物形态特征']}\n"
                          f"栽培技术要点: {plant_info['栽培技术要点']}\n"
                          f"应用价值: {plant_info['应用价值']}")
        else:
            plant_data = "未找到该植物信息"

        return plant_data

    except pymssql.OperationalError as e:
        print(f"Error querying database: {e}")
        return "查询失败，请检查数据库连接和查询语句。"

